﻿using Framework.Common.Paged;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YouTravel.QueryModels;
using YouTravel.ViewModels;

namespace YouTravel.DomainService
{
    public interface IInvoiceService
    {
        /// <summary>
        /// 申请发票
        /// </summary>
        /// <param name="invoice"></param>
        /// <param name="operateUserId"></param>
        void ApplyInvoice(InvoiceViewModel invoice, int operateUserId);
        /// <summary>
        /// 审核发票
        /// </summary>
        /// <param name="invoice"></param>
        /// <param name="operateUserId"></param>
        void AuditInvoices(InvoiceViewModel invoice, int operateUserId);
        /// <summary>
        /// 得到指定专线发票科目正常状态的数据
        /// 注:
        /// 只有专线与超级管理员用户 能使用此接口 
        /// 专线 查询他所属分社的发票科目
        /// 超级管理员 查询指定 所有发票科目
        /// </summary>
        /// <param name="specialId"></param>
        /// <param name="operateUserId"></param>
        /// <returns></returns>
        List<ComboxData> GetInvoiceSubject(int specialId, int operateUserId);
        /// <summary>
        /// 得到指定专线销售商/供应商 正常状态的数据
        /// 注:
        /// 只有专线与超级管理员用户 能使用此接口
        /// 专线 查询他下级所有销售商/供应商
        /// 超级管理员 查询所有销售商/供应商
        /// </summary>
        /// <param name="operateUserId"></param>
        /// <returns></returns>
        List<ComboxData> GetSellerSupplier(int operateUserId);
        /// <summary>
        /// 发票详细
        /// </summary>
        /// <param name="invoiceId"></param>
        /// <param name="operateUserId"></param>
        /// <returns></returns>
        InvoiceViewModel GetModel(int invoiceId, int operateUserId);
        /// <summary>
        /// 得到发票列表
        /// </summary>
        /// <param name="queryCond"></param>
        /// <returns></returns>
        CustomPagedList<InvoiceViewModel> GetList(PagedParam<InvoiceQuery> queryCond);

    }
}
